package br.com.cfccultura.admin.control.actions.cadastros;

import java.text.DecimalFormat;
import java.util.List;
import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.stereotype.Component;

import br.com.cfccultura.admin.control.actions.DefaultAction;
import br.com.cfccultura.admin.control.forms.cadastros.CadastroCursoForm;
import br.com.cfccultura.admin.model.enums.Ativo;
import br.com.cfccultura.admin.model.enums.TipoPeriodo;
import br.com.cfccultura.admin.model.vo.Curso;

@Component("/cadastroCurso")
public class CadastroCursoAction extends DefaultAction {
	
	private static final Logger logger = Logger.getLogger(CadastroCursoAction.class); 
	
	public ActionForward iniciar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {		
		
		CadastroCursoForm cursoForm = (CadastroCursoForm) form;
		consultar(cursoForm, request);
		
		return mapping.findForward("body");
	}
	
	public ActionForward consultar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {		
		
		CadastroCursoForm cursoForm = (CadastroCursoForm) form;
		consultar(cursoForm, request);
		
		return mapping.findForward("body");
	}
	
	public ActionForward incluir(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {		
		
		CadastroCursoForm cursoForm = (CadastroCursoForm) form;
		Curso vo = new Curso();
		vo.setNome(cursoForm.getNome());
		if(cursoForm.getValorCusto().length() > 0) {
			vo.setValorCusto(DecimalFormat.getInstance(new Locale("pt","br")).parse(cursoForm.getValorCusto()).doubleValue());
		}
		if(cursoForm.getValorVenda().length() > 0) {
			vo.setValorVenda(DecimalFormat.getInstance(new Locale("pt","br")).parse(cursoForm.getValorVenda()).doubleValue());
		}
		if(cursoForm.getValorProvaCusto().length() > 0) {
			vo.setValorProvaCusto(DecimalFormat.getInstance(new Locale("pt","br")).parse(cursoForm.getValorProvaCusto()).doubleValue());
		}
		if(cursoForm.getValorProvaVenda().length() > 0) {
			vo.setValorProvaVenda(DecimalFormat.getInstance(new Locale("pt","br")).parse(cursoForm.getValorProvaVenda()).doubleValue());
		}
		vo.setQtdeMinimaPresente(cursoForm.getQtdeMinimaPresente());
		vo.setTipoPeriodo(TipoPeriodo.valueOf(cursoForm.getTipoPeriodo()));
		vo.setCargaHoraria(cursoForm.getCargaHoraria());
		
		getCursoDAO().incluir(vo);
		
		return null;
	}	
	
	public ActionForward alterarIniciar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {		
		
		CadastroCursoForm cursoForm = (CadastroCursoForm) form;
		List<Curso> lista = getCursoDAO().consultar(new Curso(cursoForm.getIdSelecionado()));
		 
		Curso vo = lista.get(0);
		printJsonObjectToStream(vo, response);
		
		return null;
	}	
	
	public ActionForward alterar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {		
		
		CadastroCursoForm cursoForm = (CadastroCursoForm) form;
		Curso vo = new Curso();
		vo.setCodigo(cursoForm.getIdSelecionado());
		vo.setNome(cursoForm.getNome());
		if(cursoForm.getValorCusto().length() > 0) {
			vo.setValorCusto(DecimalFormat.getInstance(new Locale("pt","br")).parse(cursoForm.getValorCusto()).doubleValue());
		}
		if(cursoForm.getValorVenda().length() > 0) {
			vo.setValorVenda(DecimalFormat.getInstance(new Locale("pt","br")).parse(cursoForm.getValorVenda()).doubleValue());
		}
		if(cursoForm.getValorProvaCusto().length() > 0) {
			vo.setValorProvaCusto(DecimalFormat.getInstance(new Locale("pt","br")).parse(cursoForm.getValorProvaCusto()).doubleValue());
		}
		if(cursoForm.getValorProvaVenda().length() > 0) {
			vo.setValorProvaVenda(DecimalFormat.getInstance(new Locale("pt","br")).parse(cursoForm.getValorProvaVenda()).doubleValue());
		}
		vo.setQtdeMinimaPresente(new Integer(cursoForm.getQtdeMinimaPresente()));
		vo.setTipoPeriodo(TipoPeriodo.valueOf(cursoForm.getTipoPeriodo()));
		vo.setCargaHoraria(cursoForm.getCargaHoraria());
		
		getCursoDAO().alterar(vo);
		
		return null;
	}
	
	public ActionForward excluir(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {		
		
		CadastroCursoForm cursoForm = (CadastroCursoForm) form;
		getCursoDAO().excluir(cursoForm.getIdSelecionado());
		
		return mapping.findForward("body");
	}

	
	private void consultar(CadastroCursoForm cursoForm, HttpServletRequest request) {
		
		Curso vo = new Curso();
		vo.setAtivo(Ativo.setValue(cursoForm.getAtivoConsultar()));
		
		List<Curso> listaResultado = getCursoDAO().consultar(vo);
		request.setAttribute("listaResultado", listaResultado);
	}
}
